import os
import re
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 获取默认的下载文件夹路径
download_path = os.path.join(os.path.expanduser("~"), "Downloads")
print(f"下载路径是: {download_path}")

# 初始化 Selenium 浏览器
driver = webdriver.Chrome()  # 确保已安装 ChromeDriver
url = "https://sid.erda.dk/cgi-sid/ls.py?share_id=GxrFNGtykS"
driver.get(url)

# 等待页面加载
time.sleep(5)

# 抓取所有链接
links = driver.find_elements(By.TAG_NAME, "a")
print(f"抓取到的链接数量: {len(links)}")

# 创建一个文件用于保存下载链接
file_links_path = os.path.join(download_path, "file_links.txt")

# 保存文件链接和处理子目录
with open(file_links_path, "w") as f:
    for link in links:
        href = link.get_attribute("href")
        if href:
            # 检查是否是文件或子文件夹链接
            if re.search(r"\.(hic|assembly|fasta|stats|svg|png|bedgraph|gz)$", href):  # 匹配文件扩展名
                f.write(href + "\n")
            elif href.endswith("/"):  # 检测是否是子文件夹
                f.write(href + "\n")

print(f"文件链接已保存到 {file_links_path}")

# 使用 wget 下载并复现目录结构，同时过滤指定的文件类型
local_download_dir = os.path.join(download_path, "downloaded_files")
os.makedirs(local_download_dir, exist_ok=True)

wget_command = (
    f'wget -i "{file_links_path}" '
    f'--cut-dirs=1 --no-parent --recursive --no-clobber '
    f'--accept=hic,assembly,fasta,stats,svg,png,bedgraph,gz '
    f'--reject=html,css,js '
    f'--level=5 '
    f'-P "{local_download_dir}"'
)
print(f"执行 wget 命令: {wget_command}")
os.system(wget_command)

# 关闭浏览器
driver.quit()

print("下载完成，所有文件和目录已复现到本地。")
